package allaboutmybook;

import dao.DAOConcretoDetalhesPaginaLivro;
import dao.DAODetalhesPaginaLivro;
import excecoes.CampoImportanteEmBrancoException;
import excecoes.DAOException;
import excecoes.PaginaDoLivroNaoCriadaException;

public class GerenteConcretoDetalhesPaginaLivro implements GerenteDetalhesPaginaLivro
{
	private DAODetalhesPaginaLivro daoDetalhesPaginaLivro;
	private static GerenteConcretoDetalhesPaginaLivro instanciaGerenteDetalhesPaginaLivro;
	
	private GerenteConcretoDetalhesPaginaLivro()
	{
		daoDetalhesPaginaLivro = new DAOConcretoDetalhesPaginaLivro();
	}
	
	public static synchronized GerenteDetalhesPaginaLivro getInstance()
	{
		if(instanciaGerenteDetalhesPaginaLivro == null)
		{
			instanciaGerenteDetalhesPaginaLivro = new GerenteConcretoDetalhesPaginaLivro();
		}
		
		return instanciaGerenteDetalhesPaginaLivro;
	}
	
	@Override
	public void criarPaginaLivro(DetalhesPaginaLivro detalhesDaPagina)
			throws DAOException, CampoImportanteEmBrancoException
	{
		if(detalhesDaPagina.getTituloDoLivro() == null || detalhesDaPagina.getTituloDoLivro().length() <= 0)
		{
			throw new CampoImportanteEmBrancoException();
		}
		this.daoDetalhesPaginaLivro.criarPaginaLivro(detalhesDaPagina);
		
	}

	@Override
	public boolean paginaLivroJahExiste() throws DAOException 
	{
		return this.daoDetalhesPaginaLivro.paginaLivroJahExiste();
	}

	@Override
	public DetalhesPaginaLivro pegarDetalhesPaginaLivro()
			throws PaginaDoLivroNaoCriadaException, DAOException 
	{
		return this.daoDetalhesPaginaLivro.pegarDetalhesPaginaLivro();
	}

}
